
// 推荐再App.vue中使用
const PACKAGE_INFO_KEY = '__package_info__'
const util = require("@/utils/util");

export default function() {
  // #ifdef MP-WEIXIN
	applyUpdateWeChat();
	// #endif
	// console.debug("checkVersion");
	var app = getApp();

	var that = this;
	if(util.pageExist('/openScreenPage/openScreenPage') || util.pageExist('upgrade-popup')){
		console.log("广告页存在 或者已经存在框暂不弹出更新框");
		return;
	}else{
		console.log("弹出app页面");
	}
	// #ifdef APP-PLUS
	return new Promise((resolve, reject) => {
		plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
			checkApp(widgetInfo.version,widgetInfo.name,widgetInfo.versionCode).then(resolve).catch(reject);
		})
	})
	// #endif
	
	// #ifdef H5
	// return checkApp('0.0.9','0.0.9','9');
	// #endif
		
}
function checkApp(currentversion,name,versioncode){
	var app = getApp();
	let platform = uni.getSystemInfoSync().platform
	let formdata = {
		version: currentversion,
		name: name,
		versioncode: versioncode,
		timestamp: (new Date()).valueOf(),
		platform: platform,
		userId: app.getUserId(),
	}
	var url = app.globalData.config.BASE_URL + app.globalData.config.interfaces.URL_GETW_NEW_VERSION;
	// console.log(formdata);
	// console.log(url);
	
	return new Promise((resolve, reject) => {
		uni.request({
				url: url,
				data: formdata,
				success: (result) => {
					uni.hideLoading()
					// console.log(result);
					if(!result){
						reject("未请求到数据")
						return;
					}
					let respone = result.data;
					if (respone.code == 200) {
						var updateInfo = {};
						if (platform == 'ios' || platform == 'mac') {
							updateInfo = respone.data.IOS;
						}else{
							updateInfo = respone.data.android;
						}
						// console.log("respone:"+JSON.stringify(respone));
					
						if (updateInfo && util.compareVersion(updateInfo.version,currentversion)==1) {					
							resolve(updateInfo)
							const {
								silentUpdate, // 是否静默更新
								filePath, // 安装包下载地址
								updateType // 安装包类型
							} = updateInfo;
							 // 只有wgt有
							if (silentUpdate) {
								console.log("silentUpdate");
								uni.downloadFile({
									url: filePath,
									success: res => {
										if (res.statusCode == 200) {
											console.log("下载好直接安装，下次启动生效");
											// 下载好直接安装，下次启动生效
											plus.runtime.install(res.tempFilePath, {
												force: false
											});
										}
									}
								});
								return;
							}
							updateInfo.currentVersion = currentversion;
							updateInfo.versionCode = versioncode;
							
							uni.navigateTo({
								url: `/components/uni-upgrade-center-app/pages/upgrade-popup?json=`+JSON.stringify(updateInfo),
								fail: (err) => {
									console.error('弹框跳转失败', err)
								// 	uni.removeStorageSync(PACKAGE_INFO_KEY)
								}
							})
						 
						
						} else {
							reject("暂无数据")
						}
					} else {
						uni.showToast({
							title: '请求出错：' + data.msg,
							icon: 'none'
						});
						reject("请求出错")
					}
				}
			});
	})
}
/**
     * 微信小程序
     */
function applyUpdateWeChat() {
	// #ifdef MP-WEIXIN
      const updateManager = uni.getUpdateManager();
      updateManager.onCheckForUpdate(function (res) {
        // 请求完新版本信息的回调
      });
      updateManager.onUpdateReady(function (res) {
        uni.showModal({
          title: "更新提示",
          content: "发现新版本，是否重启应用？",
          success(res) {
            if (res.confirm) {
              // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
              updateManager.applyUpdate();
            }
          },
        });
      });
      updateManager.onUpdateFailed(function (res) {
        // 新的版本下载失败
      });
	  	// #endif
}
 
/**
 * 使用 uni.showModal 升级
 */
function updateUseModal(packageInfo) {
	const {
		title, // 标题
		contents, // 升级内容
		is_mandatory, // 是否强制更新
		url, // 安装包下载地址
		platform, // 安装包平台
		type // 安装包类型
	} = packageInfo;

	let isWGT = type === 'wgt'
	let isiOS = !isWGT ? platform.includes('iOS') : false;
	let confirmText = isiOS ? '立即跳转更新' : '立即下载更新'

	return uni.showModal({
		title,
		content: contents,
		showCancel: !is_mandatory,
		confirmText,
		success: res => {
			if (res.cancel) return;

			// 安装包下载
			if (isiOS) {
				plus.runtime.openURL(url);
				return;
			}

			uni.showToast({
				title: '后台下载中……',
				duration: 1000
			});

			// wgt 和 安卓下载更新
			downloadTask = uni.downloadFile({
				url,
				success: res => {
					if (res.statusCode !== 200) {
						console.error('下载安装包失败', err);
						return;
					}
					// 下载好直接安装，下次启动生效
					plus.runtime.install(res.tempFilePath, {
						force: false
					}, () => {
						if (is_mandatory) {
							//更新完重启app
							plus.runtime.restart();
							return;
						}
						uni.showModal({
							title: '安装成功是否重启？',
							success: res => {
								if (res.confirm) {
									//更新完重启app
									plus.runtime.restart();
								}
							}
						});
					}, err => {
						uni.showModal({
							title: '更新失败',
							content: err
								.message,
							showCancel: false
						});
					});
				}
			});
		}
	});
}
